/* eslint-disable no-useless-return */
import Dragger from '../../dragger/dragger'
import Pushpin from '../../dragger/pushpin'
export default {
  components: {Dragger, Pushpin},
  data: function () {
    return {
      value13: '',
      value14: '',
      color1: '#19be6b',
      color2: '#19be6b',
      hasPic: false, // 是否已经上传了图片，用于 显示图片模块 还是  上传图片 模块
      curSpace: {}, // 当前选中的 空间数据
      file: null, // 上传 的图片
      preview: null, // 上传图片 预览数据
      curPic: null, // 现实当前图片地址
      uploading: false, // 上传图片 loading
      loadingPic: false, // 上传图片 loading
      devList: [], // 空间设备库
      data0: [],
      fson: [], // 空间选择存储
      notSpace: []// 提供选择 空间数据标签
    }
  },
  created: function () {
    this.$nextTick(() => {
      this.initSelectDatas()
    })
  },
  methods: {
    show: function (index) {
      this.$Modal.info({
        title: '设备信息',
        content: `类型：${this.data6[index].type}<br>型号e：${this.data6[index].model}<br>编号${this.data6[index].number}`
      })
    },
    remove: function (index) {
      this.data6.splice(index, 1)
    },
    exportData: function () {
      let self = this
      this.$refs.table.exportCsv({
        filename: '设备管理数据',
        columns: this.columns7,
        data: self.data6.map((data, index) => {
          let tem = JSON.parse(JSON.stringify(data))
          tem.createTime = '="' + tem.createTime + '"'
          return tem
        })
      })
    },
    initSelectDatas: function () {
          this.data0 = this.$store.state.spaces
          // 选择默认值
          this.fson.push(this.data0[0].value)
          this.curSpace = this.data0[0]
          // 判断 第一个数据 中layoutPic是否为空，空，显示上传组件，不为空，加载图片：调用loadPic方法
          this.judgePicToggller(this.data0[0])
          this.getSpaceSons(this.data0, this.curSpace.value)
          this.loadDeviceDatas(this.curSpace.value)
    },
    change: function (value, selectedData) {
      //  value 返回选择的 value（空间id）值 ，从顶层到最后一层的id 组成一个 数组，获取最后一个，即是当前空间的id
      // 选择完成后的回调，返回值 value 即已选值 value，selectedData 为已选项的具体数据
      //  todo 根据每次id的变化，判断selectedData中layoutPic是否为空，空，显示上传组件，不为空，加载图片：调用loadPic方法
      this.preview = null
      this.curPic = null
      this.file = null
      let target = selectedData[selectedData.length - 1]
      this.curSpace = target
      this.judgePicToggller(target)
      // 提取 子级空间数据
      this.getSpaceSons(this.$store.state.spaces, this.curSpace.value)
      this.loadDeviceDatas(this.curSpace.value)
    },
    loadPic: function (picUrl) {
      //  向后台请求图片
      this.loadingPic = true
      window.myapi.show_pic({url: picUrl}).then(resp => {
        this.loadingPic = true
        this.curPic = 'data:image/png;base64,' + btoa(
            new Uint8Array(resp.data)
              .reduce((data, byte) => data + String.fromCharCode(byte), '')
          )
      }).catch(info => {
        this.$Notice.warning({
          title: '操作提示',
          desc: info
        })
      }).finally((fin) => {
        this.loadingPic = false
      })
    },
    judgePicToggller: function (obj) {
      if (obj.layoutPic === '') {
        this.hasPic = false
      } else {
        this.hasPic = true
        this.loadPic(obj.layoutPic)
      }
    },
    checkUpload: function (file) {
      this.file = file
      // 显示预览图片
      this.preview = window.URL.createObjectURL(file)
      // :before-upload 返回false 终端自动上传的动作，换做手动上传”
      return false
    },
    doUpload: function () {
      // 上传图片
      if (this.file === null) {
        this.$Notice.success({
          title: '操作提示',
          desc: '未选择合格的图片，请先选择再保存！ '
        })
        return
      }
      // 装载上传的文件
      let formData = new FormData()
      formData.append('pic', this.file)
      this.uploading = true
      window.myapi.upload('/$pic/upload/' + this.curSpace.value, formData).then(resp => {
        this.uploading = false
        if (resp.status === 200 && resp.data.status === 200) {
          this.$Notice.success({
            title: '操作提示',
            desc: '上传图片成功！ '
          })
        }
      }).catch(info => {
        this.$Notice.warning({
          title: '操作提示',
          desc: info
        })
      })
    },
    getSpaceSons (datas, pid) {
      for (var space of datas) {
        if (space.value === pid) {
          if (space.children) {
            this.notSpace = space.children
          } else {
            this.notSpace = []
          }
        } else {
          if (space.children) {
            this.getSpaceSons(space.children, pid)
          }
        }
      }
    },
    loadDeviceDatas (id) {
      // 加载 设备数据
      let postData = {'id': id}
      window.myapi.dev_sid(postData).then(res => {
        if (res.data.status === 200) {
          this.devList = res.data.data
        } else {
          let msg = res.data.msg ? res.data.msg : '请求失败!'
          this.$Message.error(msg)
          this.spaceDeviceObj.hasData = false
        }
      }).catch(function (e) {
        console.error(e)
      })
    }
  }
}
